home *** CD-ROM | disk | FTP | other *** search
- -> For copying DOS command paths
- -> Used in ShellScr by Kyzer/CSG
- ->
- -> Based on dospath.library source by Stefan Becker
-
- OPT PREPROCESS,MODULE
-
- MODULE 'dos/dos', 'dos/dosextens',
- 'exec/memory', 'exec/tasks', 'exec/nodes', 'exec/ports',
- 'workbench/startup'
-
- EXPORT OBJECT pathlist
- next -> BPTR to another pathlist structure or NIL
- lock -> BPTR to filelock
- ENDOBJECT
-
- EXPORT PROC getpath() RETURN MKBADDR(copypathlist(getpathlist(IF wbmessage THEN getwbtask(wbmessage) ELSE FindTask(NIL))))
-
- EXPORT PROC getwbtask(wbmsg:PTR TO wbstartup)
- DEF port:PTR TO mp, task=NIL
- IF port:=wbmsg.message.replyport THEN task:=port.sigtask
- IF task=NIL THEN task:=FindTask('Workbench')
- ENDPROC task
-
- PROC getcli(p:PTR TO ln) RETURN IF (p<>NIL) AND (p.type=NT_PROCESS) THEN BADDR(p::process.cli) ELSE NIL
-
- EXPORT PROC getpathlist(proc:PTR TO process)
- DEF cli:PTR TO commandlineinterface; cli:=getcli(proc)
- ENDPROC IF cli THEN BADDR(cli.commanddir) ELSE NIL
-
- /***
- EXPORT PROC setpathlist(proc,paths)
- DEF old=0
- DEF cli:PTR TO commandlineinterface; cli:=getcli(proc)
- IF cli
- old:=BADDR(cli.commanddir)
- IF paths THEN cli.commanddir:=MKBADDR(paths)
- ENDIF
- ENDPROC old
- ***/
-
- EXPORT PROC copypathlist(orig:PTR TO pathlist)
- DEF current=NIL:PTR TO pathlist,
- head=NIL: PTR TO pathlist,
- next=NIL: PTR TO pathlist, lock
-
- WHILE orig
- IF next=NIL THEN next:=AllocVec(SIZEOF pathlist, MEMF_PUBLIC)
- IF next
- IF lock:=DupLock(orig.lock)
- next.next:=NIL
- next.lock:=lock
- IF head=NIL THEN head:=next
- IF current THEN current.next:=MKBADDR(next)
- current:=next
- next:=NIL
- ENDIF
- ELSE
- freepathlist(head)
- RETURN NIL
- ENDIF
- orig:=BADDR(orig.next)
- ENDWHILE
-
- IF next THEN FreeVec(next)
- ENDPROC head
-
- EXPORT PROC freepathlist(next:PTR TO pathlist)
- DEF current:PTR TO pathlist
- WHILE current:=next
- next:=BADDR(current.next)
- UnLock(current.lock)
- FreeVec(current)
- ENDWHILE
- ENDPROC
-
- /***
- EXPORT PROC listpathlist(next:PTR TO pathlist)
- DEF str[4096]:STRING
- WHILE next
- IF NameFromLock(next.lock,str,StrMax(str))
- SetStr(str,StrLen(str))
- WriteF('\s\n',str)
- ENDIF
- next:=BADDR(next.next)
- ENDWHILE
- ENDPROC
- ***/
-